The Effex API is defined in its own namespace to avoid any conflicts with any other code or library you may use.
The following namespaces are important to know about if you want to use the Effex API in your plugin project.
NOTE: We highly suggest NOT to use "use namespace FXAPI". This avoids any library conflicts and makes your code clearer to read anyway (especially when you only come back to it at a later time)..
NAVIE_GLOBAL
This is the global namespace of Navie products.
Everyday things like vectors are defined in this namesapce.
NAVIE_GLOBAL::NAVIE_EFFEX
This is the global namespace of Effex.
Global Effex specific classes are defined and declared here.
NAVIE_GLOBAL::NAVIE_EFFEX::NAVIE_API
This is the namespace of the API for Cinema 4D. All the classes for interacting with Effex are in this namespace.
So whenever you have an object starting with FX (e.g. FXParticle) you can be sure you need to include the API namespace in your definition:
NAVIE_GLOBAL::NAVIE_EFFEX::NAVIE_API::FXParticle
As this can be intriguing code wise we define a preprocessor macro as FXAPI so instead write:
FXAPI::FXParticle
std
The Effex API also uses the std namespace and the C++ standard template library (STL).
Mostly you will come across vector containers.